#ifndef _MENU_H_
#define _MENU_H_

#include "igamestateview.h"
#include "igamestate.h"
#include "guisystem.h"
#include "gameinfo.h"

class GameStateManager;
class Menu;

class MenuView : public IGameStateView
{
public:
    MenuView(Menu& model, GuiSystem& gui);
    void draw(bool clear);
    void onEnter();

private:
    Menu& _model;
    GuiSystem& _gui;

    static const GuiId GUI_BLACKSELECT = 999;
    static const GuiId GUI_WHITESELECT = 998;
    static const GuiId GUI_START = 997;
    static const GuiId GUI_AISELECT = 996;

};

class Menu : public IGameState
{
public:
    Menu(GameStateManager& gsm, GameInfo& gameInfo);
    ~Menu();

    bool update(float dt, const Input& input);
    IGameStateView& getView();
    void onEnter();

private:

    GuiSystem& _gui;
    GameInfo& _gameInfo;
    MenuView& _view;
    GameStateManager& _gsm;

    static const GuiId GUI_BLACKSELECT = 999;
    static const GuiId GUI_WHITESELECT = 998;
    static const GuiId GUI_START = 997;
    static const GuiId GUI_AISELECT = 996;

};

#endif // _MENU_H_
